package Project;
//___________________________IMPORTACIONES______________________________________

import java.awt.Dialog.*;
import java.awt.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.util.*;
import net.sf.jasperreports.view.*;
//_____________________________CONSTRUCTOR______________________________________

public class IniciarReporte {
//__________________________________ATRIBUTOS___________________________________

    private final String logotipo = "/jasper/Logo_Cooperativa2.png";
    private final String lema = "/jasper/compromiso.gif";
//___________________________________METODOS____________________________________

    public void ejecutarReporte(String matricula, String nomTab, String reporte) {
        BaseDeDatos.conectarse();
        try {
            // String archivo = reporte + ".jasper";
            URL archivo = this.getClass().getResource("/jasper/" + reporte + ".jasper");
            if (archivo == null) {
                JOptionPane.showMessageDialog(null, "No se encuentra el archivo.", "Error", JOptionPane.ERROR_MESSAGE);
            }
            JasperReport masterReport = null;
            try {
                masterReport = (JasperReport) JRLoader.loadObject(archivo);
            } catch (JRException e) {
                JOptionPane.showMessageDialog(null, "Error Cargando el Reporte. " + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            }
            //este es el parámetro, se pueden agregar más parámetros//basta con poner mas parametro.put
            Map parametro = new HashMap();
            parametro.put("matricula", matricula);
            parametro.put("reporTab", nomTab);
            parametro.put("logo", this.getClass().getResourceAsStream(logotipo));
            parametro.put("lema", this.getClass().getResourceAsStream(lema));
            //Reporte diseñado y compilado con iReport
            JasperPrint jasperPrint = JasperFillManager.fillReport(masterReport, parametro, BaseDeDatos.con);
            //Se lanza el Viewerde Jasper, no termina aplicación al salir
            JasperViewer jviewer = new JasperViewer(jasperPrint, false);
            jviewer.setTitle("Reporte " + reporte);
            jviewer.setModalExclusionType(ModalExclusionType.TOOLKIT_EXCLUDE);
            jviewer.setVisible(true);

        } catch (HeadlessException | JRException e) {
            System.out.println("Mensaje de Error:" + e.getMessage());
        }
        BaseDeDatos.desconectarse();
    }
//_______________________________________________________________________

    public void ejecutarReporteComp(int ano1, int ano2, String nomReporte, String reporte) {
        BaseDeDatos.conectarse();
        try {
            // String archivo = reporte + ".jasper";
            URL archivo = this.getClass().getResource("/jasper/" + reporte + ".jasper");
            if (archivo == null) {
                JOptionPane.showMessageDialog(null, "No se encuentra el archivo.", "Error", JOptionPane.ERROR_MESSAGE);
            }
            JasperReport masterReport = null;
            try {
                masterReport = (JasperReport) JRLoader.loadObject(archivo);
            } catch (JRException e) {
                JOptionPane.showMessageDialog(null, "Error Cargando el Reporte. " + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            }
            //este es el parámetro, se pueden agregar más parámetros//basta con poner mas parametro.put
            Map parametro = new HashMap();
            parametro.put("ano1", ano1);
            parametro.put("ano2", ano2);
            parametro.put("reporTab", nomReporte);
            parametro.put("logo", this.getClass().getResourceAsStream(logotipo));
            parametro.put("lema", this.getClass().getResourceAsStream(lema));
            //Reporte diseñado y compilado con iReport
            JasperPrint jasperPrint = JasperFillManager.fillReport(masterReport, parametro, BaseDeDatos.con);
            //Se lanza el Viewerde Jasper, no termina aplicación al salir
            JasperViewer jviewer = new JasperViewer(jasperPrint, false);
            jviewer.setTitle("Reporte " + reporte);
            jviewer.setModalExclusionType(ModalExclusionType.TOOLKIT_EXCLUDE);
            jviewer.setVisible(true);

        } catch (HeadlessException | JRException e) {
            System.out.println("Mensaje de Error:" + e.getMessage());
        }
        BaseDeDatos.desconectarse();
    }
//______________________________________________________________________________

    public void ejecutarReporteEspecif(int ano1, String nomReporte, String reporte) {
        BaseDeDatos.conectarse();
        try {
            // String archivo = reporte + ".jasper";
            URL archivo = this.getClass().getResource("/jasper/" + reporte + ".jasper");

            if (archivo == null) {
                JOptionPane.showMessageDialog(null, "No se encuentra el archivo.", "Error", JOptionPane.ERROR_MESSAGE);
            }

            JasperReport masterReport = null;
            try {
                masterReport = (JasperReport) JRLoader.loadObject(archivo);
            } catch (JRException e) {
                JOptionPane.showMessageDialog(null, "Error Cargando el Reporte. " + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            }
            //este es el parámetro, se pueden agregar más parámetros//basta con poner mas parametro.put
            Map parametro = new HashMap();
            parametro.put("ano1", ano1);
            parametro.put("reporTab", nomReporte);
            parametro.put("logo", this.getClass().getResourceAsStream(logotipo));
            parametro.put("lema", this.getClass().getResourceAsStream(lema));
            //Reporte diseñado y compilado con iReport
            JasperPrint jasperPrint = JasperFillManager.fillReport(masterReport, parametro, BaseDeDatos.con);
            //Se lanza el Viewerde Jasper, no termina aplicación al salir
            JasperViewer jviewer = new JasperViewer(jasperPrint, false);
            jviewer.setTitle("Reporte " + reporte);
            jviewer.setModalExclusionType(ModalExclusionType.TOOLKIT_EXCLUDE);
            jviewer.setVisible(true);

        } catch (HeadlessException | JRException e) {
            System.out.println("Mensaje de Error:" + e.getMessage());
        }
        BaseDeDatos.desconectarse();
    }
    
    public void ejecutarReporteEspecifVarios(int ano1,int ano2, String nomReporte, String reporte) {
        BaseDeDatos.conectarse();
        try {
            // String archivo = reporte + ".jasper";
            URL archivo = this.getClass().getResource("/jasper/" + reporte + ".jasper");

            if (archivo == null) {
                JOptionPane.showMessageDialog(null, "No se encuentra el archivo.", "Error", JOptionPane.ERROR_MESSAGE);
            }

            JasperReport masterReport = null;
            try {
                masterReport = (JasperReport) JRLoader.loadObject(archivo);
            } catch (JRException e) {
                JOptionPane.showMessageDialog(null, "Error Cargando el Reporte. " + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            }
            //este es el parámetro, se pueden agregar más parámetros//basta con poner mas parametro.put
            Map parametro = new HashMap();
            parametro.put("ano1", ano1);
            parametro.put("ano2", ano2);
            parametro.put("reporTab", nomReporte);
            parametro.put("logo", this.getClass().getResourceAsStream(logotipo));
            parametro.put("lema", this.getClass().getResourceAsStream(lema));
            //Reporte diseñado y compilado con iReport
            JasperPrint jasperPrint = JasperFillManager.fillReport(masterReport, parametro, BaseDeDatos.con);
            //Se lanza el Viewerde Jasper, no termina aplicación al salir
            JasperViewer jviewer = new JasperViewer(jasperPrint, false);
            jviewer.setTitle("Reporte " + reporte);
            jviewer.setModalExclusionType(ModalExclusionType.TOOLKIT_EXCLUDE);
            jviewer.setVisible(true);

        } catch (HeadlessException | JRException e) {
            System.out.println("Mensaje de Error:" + e.getMessage());
        }
        BaseDeDatos.desconectarse();
    }

    public void ejecutarCarta(String nomAtt, String cedAtt, String cedAttlug, String cargAtt, String attCond, String cc, String cedAttCond, String cedAttLugCond, String carAttCond, String fecha,String idconduct, String reporte) {
        BaseDeDatos.conectarse();
        try {
            // String archivo = reporte + ".jasper";
            URL archivo = this.getClass().getResource("/jasper/" + reporte + ".jasper");

            if (archivo == null) {
                JOptionPane.showMessageDialog(null, "No se encuentra el archivo.", "Error", JOptionPane.ERROR_MESSAGE);
            }

            JasperReport masterReport = null;
            try {
                masterReport = (JasperReport) JRLoader.loadObject(archivo);
            } catch (JRException e) {
                JOptionPane.showMessageDialog(null, "Error Cargando el Reporte. " + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            }
            //este es el parámetro, se pueden agregar más parámetros//basta con poner mas parametro.put
            Map parametro = new HashMap();
            parametro.put("att", nomAtt);
            parametro.put("cedatt", cedAtt);
            parametro.put("cedAttLug", cedAttlug);
            parametro.put("carAtt", cargAtt);
            parametro.put("attCond", attCond);
            parametro.put("cc", cc);
            parametro.put("cedAttCond", cedAttCond);
            parametro.put("cedAttLugCond", cedAttLugCond);
            parametro.put("carAttCond", carAttCond);
            parametro.put("Fecha", fecha);
            parametro.put("idConductor", idconduct);
            parametro.put("logo", this.getClass().getResourceAsStream(logotipo));
            parametro.put("lema", this.getClass().getResourceAsStream(lema));
            //Reporte diseñado y compilado con iReport
            JasperPrint jasperPrint = JasperFillManager.fillReport(masterReport, parametro, BaseDeDatos.con);
            //Se lanza el Viewerde Jasper, no termina aplicación al salir
            JasperViewer jviewer = new JasperViewer(jasperPrint, false);
            jviewer.setTitle("Reporte " + reporte);
            jviewer.setModalExclusionType(ModalExclusionType.TOOLKIT_EXCLUDE);
            jviewer.setVisible(true);

        } catch (HeadlessException | JRException e) {
            System.out.println("Mensaje de Error:" + e.getMessage());
        }
        BaseDeDatos.desconectarse();
    }
}
//______________________________________________________________________________